// 权限校验:
// Vue Router中的前置钩子函数 beforEach(to,from,next)
// 当进行路由跳转之前,判断是否已经登录过,如果登录过就允许访问非登录页面 否则的话
// 回到登录页面

// to :即将要进入的目标路由对象
// from: 即将要离开的路由对象
//next: 是一个方法 ,可以指定路由地址,进行路由跳转

import { getUserInfo } from './api/login';
import router from './router/index';

import store from '@/store'
router.beforeEach((to, from, next) => {
    // 1.获取token值
    // const token = localStorage.getItem('x-msm-token');
    // 一旦本地当中有token state状态会立即获取token
    const token = store.state.user.token;
    // console.log('token', token);
    if (!token) {
        //  1.1 如果没有获取到token ,
        if (to.path !== '/login') {
            // 要访问非登录页面的话 ，则不让访问，让他返回登录页面
            next({ path: '/login' });
        } else {
            next();
        }

    } else {
        //  1.2 如果获取到了token
        if (to.path === '/login') {
            // 1.2.1 让他访问/login路由
            next()
        } else {
            const userInfo = localStorage.getItem('x-msm-user');
            // console.log('本地信息', userInfo);
            //获取不到本地用户信息
            if (!userInfo) {
                store.dispatch('GetUserInfo', token).then(res => {
                    if (res.flag) {
                        next()
                    } else {
                        next({ path: '/login' })
                    }
                }).catch(err => {

                })


            } else {
                next();
            }
        }
    }




})